package main

func main() {
	/*
		反射的定义：
			在运行时更新变量和检查它们的值、调用它们的方法和它们支持的内在操作，但是在编译时并不知道这些变量的具体类型。

		反射三定律：
			1.反射可以从接口值得到反射对象
			2.反射可以从反射对象获得接口值
			3.若要修改一个反射对象，其值必须可以修改

		反射的优点：
			1.通用性
			2.灵活性

		反射的缺点：
			1.反射是脆弱的：
				由于反射可以在程序运行时修改程序的状态，这种修改没有经过编译器的严格检查，不正确的修该很容易导致程序的崩溃
			2.反射是晦涩难懂的：
				语言的反射接口由于涉及语言的运行时，没有具体的类型系统的约束，接口的抽象级别高，但实现细节复杂，导致使反射的代码难以理解
			3.反射有部分性能损失：
				反射提供动态修改程序状态的能力，必然不是直接的地址引用，而是要借助运行时构造一个抽象层，这种间接访问会有性能的损失

		反射的最佳实践：
			1.在库或框架内部使用反射		（而不是把反射接口暴露给调用者，复杂性留在内部，简单性放到接口）
			2.框架代码才考虑使用反射
			3.除非没有其他办法，否则不要使用反射技术
	*/
}
